home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2010 April
/
PCWorld0410.iso
/
redakcyjne
/
programy
/
Tlen 6.0.1.12 pl
/
tleninst60112.exe
/
sdk
/
TlenSources
/
plugin
/
plugin_protocol_defs.h
< prev
next >
Wrap
C/C++ Source or Header
|
2006-08-30
|
13KB
|
343 lines
#ifndef plugin_protocol_defsH
#define plugin_protocol_defsH
#include <windows.h>
#include "plugin_contactlist_defs.h"
typedef struct {
int structSize; //wielko£µ strutkury w bajtach
char *ID; //ID protoko│u
char *Name; //Nazwa - pokazywana np przy dodawaniu nowego kontaktu
char *Extension; //rozszerzenie, ktore bedzie dodawane do identyfikatora, aby poprawnie zidentyfikowac protokol
//np "tlen.pl" dla tlenu, "gg" dla gg (w wiadomosci wpiszemy do: marekk@tlen.pl, 234343@gg, 3252353@icq)
char *Description; //Opis protoko│u
int CapsFlag1; //Flagi opisujace funkcje i zdarzenia udostepnianie przez dany protok≤│
int CapsFlag2;
int CapsFlag3;
int CapsFlag4;
} ProtocolDef; //Definicja protoko│u
typedef struct {
int structSize; //wielko£µ strutkury w bajtach
char *ProtocolID; //ID protoko│u pod kt≤ry siΩ podczepiamy
TLENFUNCTION CallBackFunc; //funkcja otrzymuj╣ca notyfikacje
char *HookFuncName; //j.w.
HINSTANCE moduleHandle; //uchwyt modu│u pluginu
} ProtocolHookDef; //Definicja hooka protoko│u
typedef struct {
int structSize; //wielko£µ strutkury w bajtach
char *ProtocolID; //ID protoko│u
char *FunctionName; //Nazwa funkcji protoko│u
WPARAM wParam; //Parametry wywo│ania
LPARAM lParam;
} ProtocolFunctionDef; //Definicja funkcji protoko│u
//Tworzy nowy protok≤│
#define TLEN_PROTOCOL_ADDNEWPROTOCOL "Tlen/AddNewProtocol"
//WPARAM: ProtocolDef *
//Kasuje protok≤│
#define TLEN_PROTOCOL_REMOVEPROTOCOL "Tlen/RemoveProtocol"
//WPARAM: char *ProtocolID
// Zwraca listΩ protoko│≤w
// listy te sa alokowane dynamicznie, wiec nalezy potem usunac kazdy element z listy
// funkcja sl_delete
#define TLEN_PROTOCOL_GETPROTOCOLLIST "Tlen/GetProtocolList"
//WPARAM: StringListDef *IDs
//LPARAM: StringListDef *Names
//Podczepia siΩ pod zdarzenia protoko│u
#define TLEN_PROTOCOL_HOOK_EVENT "Tlen/ProtocolHookEvent" //jako wParam TransportHookDef *
//Kasuje hook'a
#define TLEN_PROTOCOL_UNHOOK_EVENT "Tlen/ProtocolUnhookEvent" //jako wParam char *ProtocolID, lParam HANDLE hookID;
//Powiadamia podczepione hooki o zdarzeniu
#define TLEN_PROTOCOL_NOTIFY_HOOKS "Tlen/ProtocolNotifyHooks" //jako wParam ProtocolEventDef *, lParam - odpowiednia struktura
//Wywo│uje funkcje protoko│u
#define TLEN_PROTOCOL_CALL_FUNCTION "Tlen/ProtocolCallFunction"
//do hookowania siΩ pod zdarzenia ze wszystkich protokolow
#define TLEN_ALL_PROTOCOL_NOTIFICATION_HOOK "Tlen/AllProtocolNotificationHook"
#define CallTlenProtoFunction(hinst, a, b, c, d, ret) {ProtocolFunctionDef fn;InitializeStruct(fn);fn.ProtocolID=a;fn.FunctionName=b;fn.wParam=(WPARAM)c;fn.lParam=(LPARAM)d;ret=tlen_functions->CallTlenFunction(hInst,TLEN_PROTOCOL_CALL_FUNCTION,(WPARAM)&fn,NULL);};
#define PROTOCOL_ID_TLEN "TLEN"
#define PROTOCOL_ID_GG "GG"
#define PROTOCOL_ID_SMS "SMS"
#define PROTOCOL_ID_GENERAL "GENERAL"
//rozmowa z anonimowymi z czat≤w
#define PROTOCOL_ID_CHATANONYMOUS "ANON"
//bardziej jako ownerIDs na liscie kontaktow
#define PROTOCOL_ID_GROUP "GRP"
#define PROTOCOL_ID_CHATROOM "ROOM"
/*
//Flagi opisujace mozliwosci protokolu, kt≤re wkr≤tce siΩ pojawi╣...
#define PROTOCOL_CAPS1_SENDRAWDATA 0x00000001
#define PROTOCOL_CAPS1_FEEDRAWDATA 0x00000002
#define PROTOCOL_CAPS1_SENDMESSAGENORMAL 0x00000004
#define PROTOCOL_CAPS1_SENDMESSAGECHAT 0x00000008
#define PROTOCOL_CAPS1_CHANGEUSERSTATE 0x00000010
#define PROTOCOL_CAPS1_GETUSERSTATE 0x00000020
#define PROTOCOL_CAPS2_STATE_TEXT 0x10000000 //czy mozna ustawiac stany opisowe
#define PROTOCOL_CAPS2_STATE_DATE 0x20000000 //czy mozna ustawiac date powrotu
#define PROTOCOL_CAPS2_STATE_OFFLINE 0x00000001
#define PROTOCOL_CAPS2_STATE_ONLINE 0x00000002
#define PROTOCOL_CAPS2_STATE_CHAT 0x00000004
#define PROTOCOL_CAPS2_STATE_DND 0x00000008
#define PROTOCOL_CAPS2_STATE_AWAY 0x00000010
#define PROTOCOL_CAPS2_STATE_XA 0x00000020
#define PROTOCOL_CAPS2_STATE_INVISIBLE 0x00000040
*/
//Struktury:
typedef struct {
int structSize; //wielko£µ strutkury w bajtach
char *ProtocolID; //ID protoko│u
int EventID; //kod zdarzenia
} ProtocolEventDef; //Definicja zdarzenia protoko│u
typedef struct {
int structSize; //wielko£µ strutkury w bajtach
ContactDef Contact; //id contact i protocol
ContactsListDef MultipleContacts; //jesli wiadomosc wysylana jest do wielu osob, to userid bedzie null, a tu bedzie lista.
int Flags; //flagi - normal, chat, konferencyjna, offline, etc.
unsigned int TimeStamp; //czas wyslania - standardowy timestamp
char *MessageID; //ID wiadomosci
char *MessageText; //Tekst wiadomosci
//dla konferencji
char *RoomName;
//dla wiadomosci wyslanych z WWW na tlen
char *UserName;
char *UserEmail;
char *WWWGate;
//"uchwyt" wiadomosci - do szybkiego rozroznienia wiadomosci w funkcjach callback
int MessageHandle;
//Ekstra dane
void *OwnerData;
} ProtocolMessageDef;
#define PROTOCOL_MESSAGE_FLAGS_OFFLINE 0x00000001
#define PROTOCOL_MESSAGE_FLAGS_NORMAL 0x00000002
#define PROTOCOL_MESSAGE_FLAGS_CHAT 0x00000004
#define PROTOCOL_MESSAGE_FLAGS_WWW 0x00000008
#define PROTOCOL_MESSAGE_FLAGS_CONFERENCE 0x00000010
#define PROTOCOL_MESSAGE_FLAGS_INCOMING 0x00010000
#define PROTOCOL_MESSAGE_FLAGS_OUTGOING 0x00020000
#define PROTOCOL_MESSAGE_FLAGS_MULTIPLECONTACTS 0x00100000
typedef struct {
int structSize; //wielko£µ strutkury w bajtach
unsigned int DataLength;
char *Data;
//Ekstra dane
void *OwnerData;
int Flags;
} ProtocolRawDataDef;
typedef struct {
int structSize; //wielko£µ strutkury w bajtach
ContactDef Contact; //id contact i protocol
int Flags; //flagi - do wykorzystania w przyszlosci
char *Reason;
int TimeStamp;
//Ekstra dane
void *OwnerData;
} ProtocolAuthRequestDef;
typedef struct {
int structSize; //wielko£µ strutkury w bajtach
ContactDef Contact; //id contact i protocol
int CurrentState; //stan usera
int PreviousState; //poprzedni stan usera
char *CurrentDescription; //opis stanu
char *PreviousDescription; //opis poprzedniego stanu
int Flags; //flagi
unsigned int TimeStamp; //czas - do wykorzystania w przyszlosci
unsigned int CurrentComeBackTimeStamp; //czas powrotu - na razie u┐ywane dla GG
unsigned int PreviousComeBackTimeStamp; //czas powrotu - na razie u┐ywane dla GG
//Ekstra dane
void *OwnerData;
} ProtocolPresenceDef;
#define PROTOCOL_PRESENCE_STATE_OFFLINE 1
#define PROTOCOL_PRESENCE_STATE_ONLINE 2
#define PROTOCOL_PRESENCE_STATE_CHAT 3
#define PROTOCOL_PRESENCE_STATE_DND 4
#define PROTOCOL_PRESENCE_STATE_AWAY 5
#define PROTOCOL_PRESENCE_STATE_XA 6
#define PROTOCOL_PRESENCE_STATE_INVISIBLE 7
#define PROTOCOL_PRESENCE_FLAG_ONLYFRIENDS 0x00010000 //dla funcji ustawiajacej i pobierajacej stan uzytkownika
#define PROTOCOL_PRESENCE_FLAG_AUTOLOGIN 0x00000001 //zmieniony automatycznie po zalogowaniu
#define PROTOCOL_PRESENCE_FLAG_AUTOAWAYENTER 0x00000002
#define PROTOCOL_PRESENCE_FLAG_AUTOAWAYEXITKEY 0x00000004
#define PROTOCOL_PRESENCE_FLAG_AUTOAWAYEXITMOUSE 0x00000008
#define PROTOCOL_PRESENCE_FLAG_CUSTOMTEXT 0x00000010
#define PROTOCOL_PRESENCE_FLAG_PLUGINCHANGED 0x00000020
#define PROTOCOL_PRESENCE_FLAG_MENUCLICKED 0x00000040
//Definicje funkcji dla protoko│≤w - Protocol Function PF
#define PF_SENDMESSAGE "PFSendMessage"
//WPARAM: ProtocolMessageDef *
#define PF_GETUSERSTATE "PFGetUserState"
#define PF_CHANGEUSERSTATE "PFChangeUserState"
//WPARAM: ProtocolPresenceDef *
#define PF_SENDRAWDATA "PFSendRawData"
//WPARAM: ProtocolRawDataDef *
//RETURN:
#define PF_SENDRAWDATA_RV_OK 0
#define PF_SENDRAWDATA_RV_NOTCONNECTED 1
#define PF_FEEDRAWDATA "PFFeedRawData"
//WPARAM: ProtocolRawDataDef *
//RETURN:
#define PF_FEEDRAWDATA_RV_OK 0
#define PF_FEEDRAWDATA_RV_NOTCONNECTED 1
//-----------------------------------------------------------------------
//Zdarzenia protokolow
//-----------------------------------------------------------------------
//Jako WPARAM: ProtocolEventDef *
#define PROTOCOL_EVENT_BEFORERECVRAWDATA 0x0004 //Tu mo┐na zablokowaµ dalsze przetwarzanie pakietu
#define PROTOCOL_EVENT_AFTERRECVRAWDATA 0x000A
#define PROTOCOL_EVENT_AFTERPROCESSEDRECVRAWDATA 0x000C
#define PROTOCOL_EVENT_AFTERRECVMESSAGE 0x000E
#define PROTOCOL_EVENT_BEFORESENDRAWDATA 0x0007 //Tu mo┐na zablokowaµ wys│anie pakietu
#define PROTOCOL_EVENT_AFTERSENDRAWDATA 0x000B
//LPARAM: ProtocolRawDataDef *
#define PROTOCOL_EVENT_LOGGEDIN 0x0008
#define PROTOCOL_EVENT_LOGGEDOUT 0x0009
//LPARAM: ContactDef *
#define PROTOCOL_EVENT_RECVMESSAGE 0x0001
#define PROTOCOL_EVENT_BEFORESENDMESSAGE 0x0005
//LPARAM: ProtocolMessageDef *
#define PROTOCOL_EVENT_RECVPRESENCE 0x0002
#define PROTOCOL_EVENT_BEFORESTATUSCHANGE 0x0006
//LPARAM: ProtocolPresenceDef *
#define PROTOCOL_EVENT_AUTHREQUEST 0x000D
//LPARAM: ProtocolAuthRequestDef *
#define PROTOCOL_EVENT_RECVROSTER 0x0003
//LPARAM: NULL
#define PROTOCOL_EVENT_CONTACTDELETED 0x0010
//LPARAM ContactDef *
#define PROTOCOL_EVENT_CONTACTCHANGED 0x0020
//LPARAM:
typedef struct {
int structSize; //wielko£µ strutkury w bajtach
ContactDef old_ct;
ContactDef new_ct;
} ProtocolEventContactChanged;
//-----------------------------------------------------------------------
//Funkcje istniej╣ce ale na razie nieudokumentowane ;-)
//-----------------------------------------------------------------------
#define PF_SENDNORMALMESSAGE "PFSendNormalMessage"
#define PF_BEGINCHAT "PFBeginChat"
#define PF_BEGINCONFERENCE "PFBeginConference"
#define PF_BEGINVOICECHAT "PFBeginVoiceChat"
#define PF_BEGINVIDEOCHAT "PFBeginVideoChat"
#define PF_BEGINVOICECHAT_OLD "PFBeginVoiceChatOld"
#define PF_SENDFILES "PFSendFiles"
#define PF_SENDFILES_OLD "PFSendFilesOld"
#define PF_DELETECONTACTS "PFDeleteContacts"
#define PF_CHANGECONTACTSGROUP "PFChangeContactsGroup"
#define PF_SHOWPROPERTIES "PFShowProperties"
#define PF_SHOWADDCONTACT "PFShowAddContact"
#define PF_SHOWVCARD "PFShowVCard"
#define PF_SHOWARCHIVE "PFShowArchive"
#define PF_BLOCKCONTACTS "PFBlockContacts"
#define PF_UNBLOCKCONTACTS "PFUnblockContacts"
//Wywolywane przez okienko chata bo kliknieciu wyslij/nacisnieciu enter
#define PF_SENDCHATWINDOWMESSAGE "PFSendChatWindowMessage"
//LPARAM: TlenChatWindowInfoDef *
//WPARAM: TlenChatWindowMessageDef *
#define PF_SENDCHATWINDOWMESSAGE_RV_NOTCONNECTED -1;
#define PF_SENDCHATWINDOWMESSAGE_RV_MESSAGEEMPTY -2;
#define PF_SENDCHATWINDOWMESSAGE_RV_ARGUMENTERROR -3;
//Wywo│ywane przez okienko chata, gdy u┐ytkownik pisze wiadomosc, lub przestal pisac
#define PF_SENDTYPINGNOTIFICATION "PFSendTypingNotification"
//WPARAM: contactdef *, LPARAM:
#define PF_SENDTYPINGNOTIFICATION_TYPINGSTARTED 1
#define PF_SENDTYPINGNOTIFICATION_TYPINGSTOPPED 2
//WYwolywanie przez okienko chata, gdy uzytkownik wcisnie guziczek dzwonka w oknie rozmowy
#define PF_SENDUSERALERT "PFSendUserAlert"
//WPARAM: contactdef *, LPARAM:
#define PF_SENDUSERALERT_CHAT 0
#endif